用 'e' Jquery 连接字符串

Concatenate String with 'e' Jquery

我在将字符串与 " 和 ' 连接时遇到问题。

我想向Jquery发送一个命令,点击一个div,它有一个我作为参数传递的标题。

需要获取它才能在 jquery 函数中执行:

jQuery('div[title=\"titletoclick\"]').trigger( 'click' );

我有这个功能:

function clickOnMarker() {
    let queryString = window.location.search;
    let urlParams = new URLSearchParams(queryString);
    let spotNameOriginal = urlParams.get('markerName');
    let spotName = spotNameOriginal.slice(1,-1);
    let elementToClick = "'div[title=\'" + spotName + "'\]'"
    jQuery(elementToClick).trigger( 'click' );     
}

执行函数时出现错误,因为变量的值为

'div [title =' Sintra Spot ']'

我需要在标题中放置“”而不是''并删除空格TRIM()。

致以最诚挚的问候和感谢

你可以做到:

let elementToClick = 'div[title="' + spotName + '"]'

为什么不像这样简单地连接字符串:'div[title="' + spotName + '"]'

$(function() {
  clickOnMarker('test');
});

function clickOnMarker(spotName) {
  $('div[title="' + spotName + '"]').trigger('click');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div title="test" onclick="alert('test');">test</title>

您可以只使用 grawis / grave accent / backtick 来做到这一点 'a clean way'。

let myArg = 'my-button';
$(`button[title="${myArg}"]`).click(() => {
  console.log('clicked');
});

${} 包围的反引号之间的所有内容都将其中的内容放入字符串中。

@编辑 你的思路差不多好了。

let myArg = 'my-button';
$('button[title="' + myArg + '"]').click(() => {
  console.log('clicked');
});

当你使用'single quote'时,你只需要在里面使用'double quote'。之前不需要放\。上面的示例与第一个示例相同。所以你可以做 'hell"o" :)' 和它 returns hell"o" :)"hell'o' :)" what returns hell'o' :).

让我们一个一个解决问题。

修剪字符串可以通过调用String.prototype.trim来实现,所以我们应该有

[...]
    let spotName = spotNameOriginal.slice(1,-1);
    // Added trim here
    spotName = spotName.trim();
[...]

其次,我们处理引号。由于您查找的字符串在表单中 'div[title="<string here>"]',我们可以使用给定的引号...并根据需要转义它们。请记住,要在单引号括起的字符串中转义单引号,我们必须在它们前面加上斜杠,而双引号则不需要转义;双引号括起来的字符串则相反。
因此我们可以写

    // let elementToClick = "'div[title=\'" + spotName + "'\]'" OLD SYNTAX
    let elementToClick = "'div[title=\"" + spotName + "\"]'";

让我添加一些东西...这种字符串对 jQuery 选择器匹配没有用。正确的不会有封闭的单引号...
因此,正确的语法应该是

    // We can use the single quote as delimiter to simplify
    let elementToClick = 'div[title="' + spotName + '"]';

(我们也可以通过使用反引号来使用模板字符串,但让我们保持简单)。

加入一切,我们有

function clickOnMarker() {
    let queryString = window.location.search;
    let urlParams = new URLSearchParams(queryString);
    let spotNameOriginal = urlParams.get('markerName');
    // Add trim... Concatenating so as to reduce the boilerplate
    let spotName = spotNameOriginal.slice(1,-1).trim();
    // Build correct selector template
    let elementToClick = 'div[title="' + spotName + '"]';
    jQuery(elementToClick).trigger( 'click' );     
}